Attraper des hackers avec un honeypot - Installation
Il nous a toujours été dit que, dans la cybersécurité, les attaquants ont toujours un coup d'avance. Ces derniers vont utiliser des failles et/ou techniques dont les défénseurs n'ont aucune idée.
Ainsi, pour réduire cet écart, les défenseurs ont trouvé une manière qui permet à la fois de les protéger, mais aussi de comprendre les nouvelles techniques utilisées par les attaquants. Cette méthode est appelée honeypot.
Un honeypot est un système, volontairement laissé vulnérable et facilement accessible par les attaquants. L'objectif est de récolter des IOCs (Indicators of Compromise) et des IOAs (Indicators of Attack) pour comprendre les techniques utilisées par les attaquants.
Dans cet article, nous allons aborder le déploiement de la solution Tpot crée par la société Deutsche Telekom :

Cette solution permet d'avoir un honeypot "clés en main", ayant différents "senseurs" qui s'appuieront sur différents services pour collecter un maximum de données.
Prérequis
Dans la page github, Tpot CE mentionne les préequis suivants pour une "hive" (senseurs + analyseur de logs) :
- RAM : 16GB
- Stockage : 256GB
- Ubuntu 24.04 LTS ou tout autre distribution supportées (cf https://github.com/telekom-security/tpotce?tab=readme-ov-file#choose-your-distro)
- Une connexion internet non filtrée
J'ai choisi pour ma part la configuration suivante :
- Hosteur : DigitalOcean
- Distribution : Ubuntu 24.10
- CPU : 4vCPU
- Stockage : 160GB
Donc en somme, je ne respecte pas les prérequis... Cependant, cela marche plutôt bien :

Installation
Une fois que vous avez votre installation clean de votre distribution, créez un nouvel utilisateur et ajoutez le dans le groupe sudo :
adduser hpot
usermod -aG sudo hpot
L'utilisateur "tpot" est créé par l'installateur de tpot, il ne faut donc pas utliser ce nom d'utilisateur.
Puis, connectez-vous avec cet utilisateur et lancer l'installation :
su hpot
cd ~
env bash -c "$(curl -sL https://github.com/telekom-security/tpotce/raw/master/install.sh)"
Suivez les instructions de l'installateur. A un moment ce dernier va vous proposer de choisir certains services que vous voulez utiliser (en somme des honeypots). Choisissez celui qui vous conviennent parmi le tableau suivant :
Tableau récapitulatif
| Port | Protocol | Direction | Description | Services émulés | Description résumée | GitHub Link |
|---|---|---|---|---|---|---|
| 80, 443 | tcp | outgoing | T-Pot Management: Install, Updates, Logs (i.e. OS, GitHub, DockerHub, Sicherheitstacho, etc.) | Gestion de T-Pot | Plateforme de gestion pour les honeypots T-Pot. | T-Pot GitHub |
| 11434 | tcp | outgoing | LLM based honeypots: Access your Ollama installation | Modèles de langage (LLM) | Honeypot basé sur des modèles de langage pour interagir avec Ollama. | Ollama GitHub |
| 64294 | tcp | incoming | T-Pot Management: Sensor data transmission to hive (through NGINX reverse proxy) to 127.0.0.1:64305 | Transmission de données | Transmet les données des capteurs T-Pot vers une ruche. | T-Pot GitHub |
| 64295 | tcp | incoming | T-Pot Management: Access to SSH | SSH | Accès SSH pour la gestion de T-Pot. | T-Pot GitHub |
| 64297 | tcp | incoming | T-Pot Management: Access to NGINX reverse proxy | NGINX | Accès au reverse proxy NGINX pour T-Pot. | T-Pot GitHub |
| 5555 | tcp | incoming | Honeypot: ADBHoney | Android Debug Bridge (ADB) | Émule un service ADB pour capturer les attaques sur les appareils Android. | ADBHoney GitHub |
| 22 | tcp | incoming | Honeypot: Beelzebub (LLM required) | SSH | Honeypot SSH avec intégration de modèles de langage (LLM). | Beelzebub GitHub |
| 5000 | udp | incoming | Honeypot: CiscoASA | Cisco ASA (VPN) | Émule un service VPN Cisco ASA pour capturer les attaques. | CiscoASA GitHub |
| 8443 | tcp | incoming | Honeypot: CiscoASA | Cisco ASA (HTTPS) | Émule un service HTTPS Cisco ASA pour capturer les attaques. | CiscoASA GitHub |
| 443 | tcp | incoming | Honeypot: CitrixHoneypot | Citrix (HTTPS) | Émule un service Citrix pour capturer les attaques sur les serveurs Citrix. | CitrixHoneypot GitHub |
| 80, 102, 502, 1025, 2404, 10001, 44818, 47808, 50100 | tcp | incoming | Honeypot: Conpot | ICS/SCADA (Automates industriels) | Émule des systèmes industriels (ICS/SCADA) pour capturer les attaques. | Conpot GitHub |
| 161, 623 | udp | incoming | Honeypot: Conpot | SNMP, IPMI | Émule des protocoles SNMP et IPMI pour capturer les attaques. | Conpot GitHub |
| 22, 23 | tcp | incoming | Honeypot: Cowrie | SSH, Telnet | Émule des services SSH et Telnet pour capturer les attaques. | Cowrie GitHub |
| 19, 53, 123, 1900 | udp | incoming | Honeypot: Ddospot | Chargen, DNS, NTP, SSDP | Émule des services vulnérables pour capturer les attaques DDoS. | Ddospot GitHub |
| 11112 | tcp | incoming | Honeypot: Dicompot | DICOM (Imagerie médicale) | Émule un service DICOM pour capturer les attaques sur les systèmes médicaux. | Dicompot GitHub |
| 21, 42, 135, 443, 445, 1433, 1723, 1883, 3306, 8081 | tcp | incoming | Honeypot: Dionaea | FTP, SMB, HTTP, SQL, etc. | Émule plusieurs services pour capturer les attaques sur des protocoles variés. | Dionaea GitHub |
| 69 | udp | incoming | Honeypot: Dionaea | TFTP | Émule un service TFTP pour capturer les attaques. | Dionaea GitHub |
| 9200 | tcp | incoming | Honeypot: Elasticpot | Elasticsearch | Émule un service Elasticsearch pour capturer les attaques. | Elasticpot GitHub |
| 22 | tcp | incoming | Honeypot: Endlessh | SSH | Émule un service SSH pour capturer les attaques avec une connexion interminable. | Endlessh GitHub |
| 80, 443, 8080, 8443 | tcp | incoming | Honeypot: Galah (LLM required) | HTTP, HTTPS | Honeypot HTTP/HTTPS avec intégration de modèles de langage (LLM). | Galah GitHub |
| 8080 | tcp | incoming | Honeypot: Go-pot | HTTP | Émule un service HTTP pour capturer les attaques. | Go-pot GitHub |
| 80, 443 | tcp | incoming | Honeypot: H0neytr4p | HTTP, HTTPS | Émule des services HTTP/HTTPS pour capturer les attaques. | H0neytr4p GitHub |
| 21, 22, 23, 25, 80, 110, 143, 443, 993, 995, 1080, 5432, 5900 | tcp | incoming | Honeypot: Heralding | FTP, SSH, Telnet, SMTP, HTTP, etc. | Émule plusieurs services pour capturer les attaques sur des protocoles variés. | Heralding GitHub |
| 3000 | tcp | incoming | Honeypot: Honeyaml | HTTP | Émule un service HTTP pour capturer les attaques avec des fichiers YAML. | Honeyaml GitHub |
| 21, 22, 23, 25, 80, 110, 143, 389, 443, 445, 631, 1080, 1433, 1521, 3306, 3389, 5060, 5432, 5900, 6379, 6667, 8080, 9100, 9200, 11211 | tcp | incoming | Honeypot: qHoneypots | FTP, SSH, Telnet, SMTP, HTTP, LDAP, etc. | Émule une large gamme de services pour capturer les attaques. | qHoneypots GitHub |
| 53, 123, 161, 5060 | udp | incoming | Honeypot: qHoneypots | DNS, NTP, SNMP, SIP | Émule des services UDP pour capturer les attaques. | qHoneypots GitHub |
| 631 | tcp | incoming | Honeypot: IPPHoney | IPP (Impression) | Émule un service IPP pour capturer les attaques sur les imprimantes. | IPPHoney GitHub |
| 80, 443, 8080, 9200, 25565 | tcp | incoming | Honeypot: Log4Pot | HTTP, HTTPS, Elasticsearch, Minecraft | Émule des services vulnérables à Log4Shell. | Log4Pot GitHub |
| 25 | tcp | incoming | Honeypot: Mailoney | SMTP | Émule un service SMTP pour capturer les attaques sur les serveurs de messagerie. | Mailoney GitHub |
| 2575 | tcp | incoming | Honeypot: Medpot | DICOM (Imagerie médicale) | Émule un service DICOM pour capturer les attaques sur les systèmes médicaux. | Medpot GitHub |
| 9100 | tcp | incoming | Honeypot: Miniprint | Impression | Émule un service d'impression pour capturer les attaques. | Miniprint GitHub |
| 6379 | tcp | incoming | Honeypot: Redishoneypot | Redis | Émule un service Redis pour capturer les attaques. | Redishoneypot GitHub |
| 5060 | tcp/udp | incoming | Honeypot: SentryPeer | SIP | Émule un service SIP pour capturer les attaques sur les systèmes VoIP. | SentryPeer GitHub |
| 80 | tcp | incoming | Honeypot: Snare (Tanner) | HTTP | Émule un service HTTP pour capturer les attaques avec des interactions avancées. | Snare GitHub |
| 8090 | tcp | incoming | Honeypot: Wordpot | HTTP | Émule un service HTTP pour capturer les attaques sur les blogs WordPress. | Wordpot GitHub |
Une fois l'installation terminée, si vous étiez connecté via SSH sur votre VM, vous perderez peut être la connexion vu qu'un honeypot à pris votre place.
Voici les nouveaux ports qui vous permettront de vous connecter :
- SSH : 64295
- NGINX : 64297
Ainsi il est recommandé de soit :
- Implémenter un VPN pour accéder à ces 2 ports uniquement depuis votre machine, mais cela va utiliser plus de ressources.
- Whitelister votre IP via un firewall (UFW, iptables, etc.)
Prise en main
Une fois connecté à votre VM, vous pouvez accéder à l'interface web de Tpot via le port 64294 :

Vous avez alors accès a plusieurs services :
- Attack map : Carte des attaques en cours
- Cyberchef : Outil pour décoder des données
- Elasticvue : Management des nodes/clusters
- Kibana : Dashboards + visualisation des logs$
- Spiderfoot : Outil de reconnaissance
Ce qui va nous intéresser dans un premier temps, c'est le service Kibana. Nous avons comme page d'acceuil le dashboard général :

Il y a également un dashboard pour chaque honeypot, permettant de voir les attaques en cours, les IP des attaquants, les payloads utilisés, etc.
Ici par exemple le dashboard de "Cowrie", un honeypot SSH :

Ou par exemple ici le dashboard de "Dionaea", un honeypot multi-protocoles :

Nous pouvons ensuite regarder les logs provenant de nos différents honeypots. Pour cela, il faut aller dans l'onglet "Discover" :

Vous pouvez alors voir les logs en temps réel, et les filtrer par honeypot, IP, payload, etc :

Nous pourrons ensuite filtrer et sélectionner ces logs avec du KQL (Kibana Query Language) pour les exporter et les analyser. Mais cela sera expliqué dans la partie 2 !